//TODO readonly修饰符:关键字->对类中的属性成员进行修饰,修饰后,该属性成员,在外部就不可以被随意的修改了
(()=>{
//定义一个类
    class Person{
        //属性
        //readonly name:string
        //构造函数中可以对只读的属性成员的数据惊进行修改
        //构造函数中的name参数,一旦使用readonly修饰后,那么该name参数可以叫参数属性
        //构造函数中的name参数,一旦使用readonly修饰后,那么person中就有了一个name的属性成员了
        //构造函数中的name参数,一旦使用readonly修饰后,外部也无法修改类中的name属性成员值的
        //构造函数中的name参数,一旦使用public修饰后,那么Person类中就有一个公共的name属性成员了
        //构造函数中的name参数,一旦使用private修饰后,那么Person类中就有一个私有的name属性成员了
        //构造函数中的name参数,一旦使用protected修饰后,那么Person类中就有一个受保护的name属性成员了,此时只能在本类和派生类中进行访问的
        constructor(readonly name:string) {
            this.name = name
            //this.name = '哈哈'
        }
       /* sayHi(){
            console.log(`哇哇哇,${this.name}`)
            //类中的普通方法也是不可以修改readonly修饰的成员属性值的
            //this.name = '我不想哭'
        }*/
    }
    //实例化对象
    const person = new Person('我想哭')
    console.log(person)
    console.log(person.name)
    //此时无法修改,因为name属性时只读的,也无法编译
    //person.name = '我不想哭'
    console.log(person.name)
})()
